Skip to content

ci(api): enforce non-mutating lint gate in CI - #134

Merged
EmeditWeb merged 1 commit into
mainfrom
ci/api-lint-coverage-gate
Sep 24, 2026
Merged

EmeditWeb merged 1 commit into
mainfrom
ci/api-lint-coverage-gate

Conversation

@EmeditWeb

Copy link
Copy Markdown
Member

🔗 Related Issue

No linked issue — CI/tooling hardening (Phase 2 quality gates).

🔖 Title

ci(api): enforce non-mutating lint gate in CI

📝 Description

CI ran only build + test, so lint regressions could land unnoticed. The existing lint script uses --fix, which mutates files and is unsuitable for a gate. This PR adds a dedicated non-mutating lint:ci script and runs it as a required CI step, then clears the pre-existing lint errors that gate surfaces.

🔄 Changes Made

  • Add lint:ci script: eslint "{src,apps,libs,test}/**/*.ts" --max-warnings=0 (no --fix)
  • Add a Lint step to .github/workflows/ci.yml, before Build
  • Fix the 7 pre-existing @typescript-eslint/no-explicit-any errors with precise types — no behavior change:
    • audit.interceptor.ts: Observable<unknown> + typed reflector generic
    • transaction-status-checker.processor.ts: typed error-boundary casts and a typed XDR-wrapper shape in place of any

🗒️ Additional Notes

Verified locally: npm run lint:ci, npm run build, and npm test (460 passing) all exit 0.

Coverage gate intentionally deferred. npm run test:cov currently reports 0% for all files because sources live outside the jest rootDir (test/) and are never instrumented; adding roots to fix collection also pulls in a broken in-src spec. Repairing coverage collection is a separate change and will be tracked as its own follow-up rather than gating on a meaningless 0% metric here.

Add a `lint:ci` script (eslint with --max-warnings=0, no --fix) and run it as a
required CI step before build. Clear the 7 pre-existing no-explicit-any errors this
surfaces by giving them precise types (Observable<unknown>, a typed reflector
generic, typed error/XDR-boundary casts) with no behavior change.

Coverage gate deferred: test:cov currently reports 0% because source lives outside
the jest rootDir (test/) and is not instrumented; fixing collection is a separate
change tracked for follow-up.
@EmeditWeb
EmeditWeb merged commit 998682f into main Sep 24, 2026
2 checks passed
@EmeditWeb
EmeditWeb deleted the ci/api-lint-coverage-gate branch September 29, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant